#include "MainMenu.h"
#include "PrintUtils.h"
//#include "StringUtilities.h"
//#include "StartingMenu.h"
//#include "LeagueManager.h"
//#include "MenuManager.h"
//#include "EndLeagueMenu.h"
//#include "GameOverMenu.h"
//#include "UserManager.h"
//#include "GameControls.h"
//#include "GameSettings.h"
//#include "UserSelectionMenu.h"
//#include "TeamMenu.h"
//#include "ConfirmPanel.h"
//#include "GameControls.h"
//#include "Types.h"
//
//#include <ctime>

Menu* MainMenu::Input(const Inputs& input) {
	return this;
}

void MainMenu::Draw(Console& console) const {
	PrintTitle(console, " MAIN MENU");
}

//void MainMenu::Draw() const
//{
//	const size_t currentTurn =  GetSP()->GetLeagueMgr().GetCurrentTurn();
//	const bool isEnded = GetSP()->GetLeagueMgr().IsEnded();
//
//	STD::cout	<< Print::Title(" -SEASON " + Utilities::IntToStlString(GetSP()->GetLeagueMgr().GetCurrentSeason()) + "-\n  MENU:") << STD::endl << STD::endl;
//
//	STD::cout	<< Print::Options(	
//						(isEnded ? " 1) End Season.\n" : " 1) Play Turn (" + Utilities::IntToStlString(currentTurn + 1) + ").\n") + 
//						" 2) Team Management.\n"
//						" 3) View League Statistics.\n"
//						" 4) View Team Statistics.\n" 
//						" 5) View People Statistics.\n" 
//						" 6) Save Game.\n"
//						" 7) Search.\n"
//						" 8) Add/Retire New Player.\n"
//						+ (m_isDebugMode ? "99) Goto End Season. (***DEBUG MODE***)\n" : "")
//						+ (m_isDebugMode ? "sX) Simulate X Seasons. (***DEBUG MODE***)\n" : "") + 
//						"\n 0) Exit from game.");
//	STD::cout	<< " Selection: ";
//}
//
//bool MainMenu::Input(const STL::string& i_input)
//{
//	bool goodInput = true;
//	const bool isEnded = GetSP()->GetLeagueMgr().IsEnded();
//
//	int res = 0;
//	int yearsToSimulate = 0;
//	if(i_input[0] == 's')
//	{
//		res = 1234567;
//		yearsToSimulate = Utilities::StringToInt(i_input.c_str() + 1);
//	}
//	else
//	{
//		res = Utilities::StringToInt(i_input);
//	}
//
//	switch (res)
//	{
//		case 1:
//			if(!isEnded)
//			{
//				GetMM()->GetGameControls()->Simulate(false);
//				GetMM()->SetMenu(GetMM()->GetPlayTurnsMenu());	
//			}
//			else
//			{
//				STD::stringstream message;
//				GetMM()->GetGameControls()->EndSeason(false, message);
//				EndLeagueMenu* elMenu = static_cast<EndLeagueMenu*>(GetMM()->GetEndLeagueMenu());
//				elMenu->SetMessage(message.str().c_str());
//				GetMM()->SetMenu(elMenu);
//
//				GetSP()->GetUserMgr().CheckLosingPlayers();
//				if(!GetSP()->GetUserMgr().m_gameoverNames.empty())
//					GetMM()->PushMenu(GetMM()->GetGameOverMenu());
//			}
//			break;
//
//		case 2:
//			{
//				UserSelectionMenu* usMenu = static_cast<UserSelectionMenu*>(GetMM()->GetUserSelectionMenu());
//				usMenu->SetSentence("Select team");
//				TeamMenu* tMenu = static_cast<TeamMenu*>(GetMM()->GetTeamMenu());
//				tMenu->SetTeamID(Utilities::INVALID_ID);
//				usMenu->SetNextMenu(tMenu);
//				GetMM()->PushMenu(usMenu);
//			}
//			//GetMM()->SetMenu(GetMM()->GetTeamsManagementMenu());			
//			break;
//
//		case 3:
//			GetMM()->SetMenu(GetMM()->GetLeagueSelectionMenu());
//			break;
//
//		case 4:
//			GetMM()->SetMenu(GetMM()->GetTeamsStatsMenu());
//			break;
//		
//		case 5:
//			GetMM()->SetMenu(GetMM()->GetPlayersStatsMenu());
//			break;
//
//		case 6:
//			GetMM()->SetMenu(GetMM()->GetSaveMenu());
//			break;
//
//		case 7:
//			GetMM()->SetMenu(GetMM()->GetSearchMenu());
//			break;
//
//		case 8:
//			GetMM()->SetMenu(GetMM()->GetTeamSelectionMenu());
//			break;
//
//		case 99:
//			if(m_isDebugMode)
//				while(!GetSP()->GetLeagueMgr().IsEnded())
//					GetMM()->GetGameControls()->Simulate(true);
//			goodInput = false;
//			break;
//
//		case 1234567:
//			if(m_isDebugMode)
//			{
//				STD::stringstream message;
//				while(yearsToSimulate != 0)
//				{
//					clock_t clock0 = clock();
//					while(!GetSP()->GetLeagueMgr().IsEnded())
//						GetMM()->GetGameControls()->Simulate(true);
//					GetMM()->GetGameControls()->EndSeason(true, message);
//					GetSP()->GetUserMgr().CheckLosingPlayers();
//					--yearsToSimulate;
//					STD::cout << "Season: " << GetSP()->GetLeagueMgr().GetCurrentSeason() << " - Time Elapsed: " << clock() - clock0 << STD::endl;
//				}
//			}
//			goodInput = false;
//			break;
//
//		case 0:
//			{
//				ConfirmPanel* confirmPanel = static_cast<ConfirmPanel*>(GetMM()->GetConfirmPanel());
//				confirmPanel->SetSentence("You are quitting the game");
//				confirmPanel->SetDelegate(this);
//				GetMM()->PushMenu(confirmPanel);
//			}
//			break;
//
//		default:
//			goodInput = false;
//			break;
//	}
//	return goodInput;
//}
//
//void MainMenu::PanelWillClose(bool i_yesOrNo)
//{
//	if (i_yesOrNo)
//	{
//		StartingMenu* startingMenu = static_cast<StartingMenu*>(GetMM()->GetStartingMenu());
//		startingMenu->m_continueGame = true;
//		GetMM()->PopMenu();
//	}
//}
//
